package org.wdcode.back.po;

import java.io.Serializable;

import org.wdcode.back.helper.BackHelper;
import org.wdcode.back.helper.CompanyHelper;
import org.wdcode.back.helper.DepartmentHelper;
import org.wdcode.back.helper.RoleHelper;
import org.wdcode.base.bean.impl.BaseUserBean;
import org.wdcode.common.tools.Conversion;
import org.wdcode.common.util.CommonUtil;

/**
 * 用户实体
 * @author WD
 * @since JDK6
 * @version 1.0 2009-11-23
 */
public final class User extends BaseUserBean implements Serializable {
	// 序列化ID
	private static final long	serialVersionUID	= -3706906968816442369L;

	// 所属公司ID
	private Integer				companyId;
	// 部门ID
	private Integer				departmentId;
	// 角色ID
	private Integer				roleId;
	// 用户手机
	private String				mobile;
	// 用户电话
	private String				phone;
	// 用户IM
	private String				im;

	// 公司实体
	private Company				company;
	// 部门实体
	private Department			department;
	// 角色实体
	private Role				role;

	/**
	 * 获得公司实体
	 * @return 公司实体
	 */
	public Company getCompany() {
		return CommonUtil.isEmpty(company) ? setCompany(companyId) : company;
	}

	/**
	 * 设置公司实体
	 * @param companyId 公司ID
	 * @return 公司实体
	 */
	public Company setCompany(Integer companyId) {
		return company = CompanyHelper.getHelper().get(Conversion.toInt(companyId));
	}

	/**
	 * 获得部门实体
	 * @return 部门实体
	 */
	public Department getDepartment() {
		return CommonUtil.isEmpty(department) ? setDepartment(departmentId) : department;
	}

	/**
	 * 设置部门实体
	 * @param departmentId 部门ID
	 * @return 部门实体
	 */
	public Department setDepartment(Integer departmentId) {
		return department = DepartmentHelper.getHelper().get(Conversion.toInt(departmentId));
	}

	/**
	 * 获得角色实体
	 * @return 角色实体
	 */
	public Role getRole() {
		return CommonUtil.isEmpty(role) ? setRole(roleId) : role;
	}

	/**
	 * 设置角色实体
	 * @param companyId 角色ID
	 * @return 角色实体
	 */
	public Role setRole(Integer roleId) {
		return role = RoleHelper.getHelper().get(Conversion.toInt(roleId));
	}

	/**
	 * 获得显示性别字符串
	 * @return 显示性别字符串
	 */
	public String getSexString() {
		return BackHelper.getSex().get(getSex());
	}

	/**
	 * 获得所属公司ID
	 * @return 所属公司ID
	 */
	public Integer getCompanyId() {
		return this.companyId;
	}

	/**
	 * 设置所属公司ID
	 * @param companyId 所属公司ID
	 */
	public void setCompanyId(Integer companyId) {
		this.companyId = companyId;
	}

	/**
	 * 获得部门ID
	 * @return 部门ID
	 */
	public Integer getDepartmentId() {
		return this.departmentId;
	}

	/**
	 * 设置部门ID
	 * @param departmentId 部门ID
	 */
	public void setDepartmentId(Integer departmentId) {
		this.departmentId = departmentId;
	}

	/**
	 * 获得角色ID
	 * @return 角色ID
	 */
	public Integer getRoleId() {
		return this.roleId;
	}

	/**
	 * 设置角色ID
	 * @param roleId 角色ID
	 */
	public void setRoleId(Integer roleId) {
		this.roleId = roleId;
	}

	/**
	 * 获得用户手机
	 * @return 用户手机
	 */
	public String getMobile() {
		return this.mobile;
	}

	/**
	 * 设置用户手机
	 * @param mobile 用户手机
	 */
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}

	/**
	 * 获得用户电话
	 * @return 用户电话
	 */
	public String getPhone() {
		return this.phone;
	}

	/**
	 * 设置用户电话
	 * @param phone 用户电话
	 */
	public void setPhone(String phone) {
		this.phone = phone;
	}

	/**
	 * 获得用户IM
	 * @return 用户IM
	 */
	public String getIm() {
		return this.im;
	}

	/**
	 * 设置用户IM
	 * @param im 用户IM
	 */
	public void setIm(String im) {
		this.im = im;
	}

	/**
	 * 获得显示状态字符串
	 * @return 显示状态字符串
	 */
	public final String getStateString() {
		return BackHelper.getState().get(getState());
	}
}